import pako from 'pako'
import { TextDecoder, TextEncoder } from './text-coder.js'
// 解压方法（对应 C# 的 Decompress）
function decompressGzipBase64(base64Str) {
    try {
        // 1. Base64 解码为二进制
        const binaryStr = atob(base64Str);
        const bytes = new Uint8Array(binaryStr.length);
        for (let i = 0; i < binaryStr.length; i++) {
            bytes[i] = binaryStr.charCodeAt(i);
        }

        // 2. GZip 解压
        const decompressedData = pako.inflate(bytes);

        // 3. 转为 UTF-8 字符串（对应 C# 的 Encoding.UTF8.GetString）
        const decoder = new TextDecoder('utf-8');
        const jsonStr = decoder.decode(decompressedData);

        return JSON.parse(jsonStr);
    } catch (error) {
        console.error('解压失败:', error);
        return null;
    }
}

// 压缩方法（对应 C# 的 Compress）
function compressGzipBase64(jsonObj) {
    // 1. 移除 JSON 缩进（模拟 C# 的 FormatJson）
    const minifiedJson = JSON.stringify(jsonObj);

    // 2. 转为 UTF-8 字节
    const encoder = new TextEncoder();
    const bytes = encoder.encode(minifiedJson);

    // 3. GZip 压缩
    const compressedData = pako.gzip(bytes);

    // 4. Base64 编码
    let binaryStr = '';
    compressedData.forEach(byte => {
        binaryStr += String.fromCharCode(byte);
    });
    return btoa(binaryStr);
}



export {
    decompressGzipBase64,
    compressGzipBase64
}